import time
from public.action import *
from public.business import *
from public.testData import *
from public.tools import *

testcase = "dbshop002_线下支付流程"
# 1.在首页搜索"小米"，点击搜索按钮
ff = openBrowser(url)  # 调用自定义函数打开网页,url的值是在testData文件中定义的
# 调用自定义函数进行登录
DBshopLogin(ff, userName, password)
# 在首页的搜索框输入小米
ff.find_element_by_xpath("//input[@name='keywords']").send_keys("小米")

# ff.get(urlAdmin)
# 调用自定义函数进行后台的登录#点击搜索按钮
ff.find_element_by_xpath("//input[@type='submit']").click()
# 2.选择小米mix3,加入到购物车,点击购物车按钮
# 点击商品图片弹出新页面
ff.find_element_by_xpath("//a[@href='/dbshop/goods/8/2']").click()
# 调用函数切换页面
switchWindow(ff, 2)
# 在新页面中点击加入购物车按钮
ff.find_element_by_id("add_cart_submit").click()
time.sleep(2)
# 点击去购物车结算按钮
ff.find_element_by_link_text("去购物车结算").click()

# 3.点击"去结算"按钮+
ff.find_element_by_link_text("去结算").click()
# 4.默认地址已经被选择,点击下一步按钮
ff.find_element_by_xpath("//input[@value='下一步']").click()
# 5.支付方式选择"余额支付",点击确认订单
ff.find_element_by_xpath("//input[@value='yezf']").click()
ff.find_element_by_xpath("//input[@value='确认订单']").click()
# 使用变量NO存储订单编号
NO = ff.find_element_by_xpath("(//font[@color='color:#ED145B'])[2]").text
rootPath = get_pro_rootpath()
writeFile(rootPath + "\public\order1.txt", NO)
# 6.点击马上支付,输入"支付凭证信息","线下支付宝支付",点击提交支付凭证按钮
ff.find_element_by_xpath("//input[@value='马上去支付']").click()
# 7.登录后台管理系统,地址是"http://localhost/dbshop/admin",
ff.get(urlAdmin)
DBshopLoginAdmin(ff)
# 8.进入销售管理订单管理,找到刚才前台提交的订单,点击"编辑查看",再点击付款操作按钮
# 调用后台的菜单操作函数
DBshopEnterMenu2(ff, '销售管理', '订单管理')
# 搜索出订单
ff.find_element_by_name("order_sn").send_keys(NO)
ff.find_element_by_xpath("//button").click()
ff.find_element_by_link_text("编辑查看").click()
# 9.先搜索出上面的订单号,点击发货操作
ff.find_element_by_link_text("发货操作").click()
# 10，输入订单号，点击“点击发货”
ff.find_element_by_xpath("//button").click()
# 11.到dbshop前台我的订单中完成收货
ff.get(url)
# 点击我的订单
ff.find_element_by_link_text('我的订单').click()
# 点击已发货
ff.find_element_by_partial_link_text('已发货').click()
ff.find_element_by_name('search_order_sn').send_keys(NO)
ff.find_element_by_xpath('//button').click()
ff.find_element_by_xpath('//button[text()="确认收货"]').click()
ff.find_element_by_xpath('//button[@type="submit"]').click()
ff.switch_to.alert.accept()
# 12.到dbshop前台查看我的订单"交易完成"中,检查上面的订单状态
# 点击交易完成
ff.find_element_by_partial_link_text('交易完成').click()
ff.find_element_by_name('search_order_sn').send_keys(NO)
ff.find_element_by_xpath('//button').click()
# 断言
try:
    ff.find_element_by_link_text(NO).is_displayed()  # is_displayed()函数判断元素是否显示
    writeLog("%s 测试通过" % testcase)
except:
    writeLog("%s 测试失败" % testcase)
    getPhoto(ff)
ff.quit()
